@USE
Debug.p
Profiler.p


###############################################################################
# инициализация
@auto[]
^dshow[main auto]
###############################################################################



###############################################################################
@postprocess[body]
^if($body is string && ^file:justext[^request:uri.match[\?.*][]{}] ne xml){

	$date_now[^date::now[]]
	$date_now_str[^date_now.hour.format[%02u]:^date_now.minute.format[%02u] ^date_now.day.format[%02d].^date_now.month.format[%02d].${date_now.year}]
	$exec_time($status:rusage.tv_sec + $status:rusage.tv_usec/1000000 - $MAIN:start_time)
	
	^if($oSql is "Sql"){
		^use[SqlLog.p]
		$oSqlLog[^SqlLog::create[$oSql]]
	}
	
	^try{
		$sObjStst[^ActiveRecord:hC.foreach[sKey;hVal]{$sKey - ^hVal._count[]}[, ]]
	}{
		$exception.handled(1)
	}
	
	$timer[^exec_time.format[%.4f] с, $date_now_str, запросов: $oSqlLog.oSqlInfo.hStat.TOTAL.iCount<br/>
	Загруженные объекты: $sObjStst]
	$result[^body.match[<!--timetime-->][]{^taint[as-is][<p>$timer</p><!--timetime-->]}]
	
	^getSQLStat[]
}{
	$result[$body]
}
#end @postprocess[]
###############################################################################



###############################################################################
# этот метод выведет статистику, собранную объектом $MAIN:pSQL
@getSQLStat[]

^if($oSql is "Sql"){
	^use[SqlLog.p]
	$oSqlLog[^SqlLog::create[$oSql]]
	^oSqlLog.log[
		$.iQueryTimeLimit(50)
		$.iQueriesLimit(2)
		$.iQueryRowsLimit(30)
#		$.bExpandExceededQueriesToLog(1)
		^if(def $form:mode && ^form:tables.mode.locate[field;debug]){
			^rem{ *** если обратились с ?mode=debug то получаем и сохраняем информацию обо всех sql запросах на странице *** }
			$.sFile[/../data/log/sql.txt]
			$.bAll(1)
		}{
			^rem{ *** а по умолчанию в другой лог-файл пишем только информацию о проблемных страницах *** }
			$.sFile[/../data/log/sql.log]
		}
	]
}

#end @getSQLStat[]
###############################################################################
